Method and Apparatus for Rendering Websites on Physical Devices

ABSTRACT

In at least one embodiment, the system and method described herein provides a concrete and tangible technical solution to the problem of activating and testing multiple web pages on multiple devices to determine any anomalies or other errors in rendering the web pages due to, for example, the unpredictable nature of rendering web pages on multiple devices having, for example, a multitude of different configuration characteristics. Furthermore, the system and method, in at least one embodiment, provide an automated process that is capable of testing web pages and devices remotely and in parallel at a high bandwidth. A system and method utilize a device service to coordinate: activating a web browser on each of the set of devices selected, rendering the web page by each web browser of the set of devices selected, and capturing one or more images of the web page as rendered by the set of devices selected.

CROSS-REFERENCE TO RELATED APPLICATION

This application claims the benefit under 35 U.S.C. §119(e) and 37 C.F.R. §1.78 of U.S. Provisional Application Nos. 62/067,317 and 62/067,312, which were both filed on Oct. 22, 2014 and are both incorporated by reference in their entirety.

This application incorporates by reference the U.S. patent application having Attorney Docket No. SPRINGBOX1100, entitled “METHOD AND APPARATUS FOR RENDERING AN IMAGE FOR AN ENTIRE WEB PAGE ON PHYSICAL DEVICES,” inventors Todd Berry, Dina Fitzpatrick, and Brian Brooks, filed on Oct. 22, 2015.

COPYRIGHT NOTICE

A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.

TECHNICAL FIELD

This disclosure relates generally to website design and testing. More particularly, embodiments disclosed herein relate to a system, method, and computer program product for remotely activating applications on multiple remote devices, rendering a website on the multiple remote devices, and routing the results to a user as an analysis report and/or images.

BACKGROUND OF THE RELATED ART

Traditionally, websites have been designed for viewing on desktop and laptop computers having standard display sizes. Accordingly, it has been relatively easy to design websites for display on such devices. However, the proliferation of devices such as smartphones and tablet computers has resulted in a corresponding proliferation of display sizes and aspect ratios.

A typical procedure for ensuring that a website displays properly on a device has required, firstly, that the device be in a tester's possession. A website URL (Uniform Resource Loactor) provides a location of a web page of the website. References herein to a website URL refer to a URL of the website that references a web page of the website. Once the device is in the tester's possession, the device's browser may be launched and the website URL (Uniform Resource Locator) typed into the browser (typically through a touch screen). The browser may then display the website on the screen. Once displayed, the tester may capture an image of the screen. The tester then may scroll down the website and perform another capture of the screen. This process is repeated for each screen page of the website. The precise process of obtaining such a screenshot and the number of screenshots for a website may vary per device and operating system. The screenshots for the website under testing may then be saved or exported by using a cable or wireless connection to a computer or sending an e-mail from the device. The resulting device images are then stitched together using photo editing software.

As can be appreciated, for a wide spectrum of devices, this can be an expensive and time-consuming proposition. Furthermore, the devices must be in the physical proximity and be physically manipulatable by a user. Advances in technology continue to bring challenges to website design and testing. Consequently, there is always room for innovations and improvements.

SUMMARY OF THE DISCLOSURE

Embodiments disclosed herein generally relate to devices that physically render web pages of a website in a testing environment. Due to variations and revisions of web pages and devices that display the web pages, the particular physical rendering and display of multiple web pages by multiple devices often yields unpredictable results. A website designer designs one or more web pages for display by multiple devices that display web pages, such as smart phones, tablet computers, laptop computers, and desktop computers. Often the devices that will access the website differ in one or more of numerous ways, such as by different operating systems, different embedded and integrated browser applications, different physical display sizes, different display resolutions, different color palettes, and different font libraries. Furthermore, many of the foregoing features of the devices are often updated or otherwise changed on a physical and/or software (including firmware and operating systems) basis. Additionally, many websites often change the content, format, graphics, or other design features.

Against this backdrop of changing devices, changing web pages of websites, and the unpredictable results of physical rendering and display of a web page on the devices, physically testing the web pages on devices of interest in an on demand environment presents a tangible and concrete technical problem. Embodiments herein provide a technical solution to overcoming the physical limitations of selecting devices and web pages, activating the devices for testing the web pages, and returning test results to a user. Furthermore, time constraints to successfully implement web pages across multiple device platforms while utilizing a minimal amount of human resources benefits from embodiments of the technical solution described herein. In at least one embodiment, the system and method can remotely test multiple web pages on multiple device platforms, such as 10 or more, within a 5-30 second window.

Additionally, embodiments disclosed herein relate generally to the field of website design and testing, specifically in the context of a designing and testing a website for viewing on devices including mobile devices. In some embodiments, a system includes a web application, a device service in communication with a plurality of devices, and a device application running on the devices. A tester may use the web application with a particular device service to select devices for testing. In at least one embodiment, the user may also input one or more a URL's for a website for testing and/or select a pre-identified website domain for testing. In at least one embodiment, the one or more URL's or website domain and list of selected devices are provided via the web application to the device service, which causes the selected devices to load the web page of the website at the designated URL using a browser embedded in or integrated with the device application. In some embodiments, device applications running on the selected devices load the websites and provide images corresponding to entire pages for a given URL (not just what fits on a screen) to the web application via the device service.

Embodiments disclosed herein can provide many advantages. For example, embodiments allow a tester to test multiple devices at a given time and without having to individually activate and configure the device's web browser. Web pages often exceed the display size of a device. Scrolling allows the entire, loaded web page to be displayed. In at least one embodiment, the device application is able to capture an image of an entirety of a web page rather than individual screenshots.

These, and other, aspects of the disclosure will be better appreciated and understood when considered in conjunction with the following description and the accompanying drawings. It should be understood, however, that the following description, while indicating various embodiments of the disclosure and numerous specific details thereof, is given by way of illustration and not of limitation. Many substitutions, modifications, additions and/or rearrangements may be made within the scope of the disclosure without departing from the spirit thereof, and the disclosure includes all such substitutions, modifications, additions and/or rearrangements.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings accompanying and forming part of this specification are included to depict certain aspects of the disclosure. It should be noted that the features illustrated in the drawings are not necessarily drawn to scale. A more complete understanding of the disclosure and the advantages thereof may be acquired by referring to the following description, taken in conjunction with the accompanying drawings in which like reference numbers indicate like features.

FIG. 1 depicts a diagrammatic representation of a high level network architecture in which embodiments disclosed herein may be implemented.

FIG. 2 depicts an example of a user interface of a web application in accordance with some embodiments.

FIG. 3 depicts an example of handling of different device form factors in accordance with some embodiments.

FIG. 4 depicts a flowchart illustrating operation in accordance with some embodiments.

FIG. 5 depicts an embodiment of a website/web page and device testing process.

FIG. 6 depicts a captured image-to-target comparison operation.

FIG. 7 depicts an availability and validation process.

FIG. 8 depicts an exemplary device in FIG. 1.

FIG. 9 depicts an exemplary user interface of a user.

DEVICE DETAILED DESCRIPTION

The disclosure and various features and advantageous details thereof are explained more fully with reference to the exemplary, and therefore non-limiting, embodiments illustrated in the accompanying drawings and detailed in the following description. It should be understood, however, that the detailed description and the specific examples, while indicating the preferred embodiments, are given by way of illustration only and not by way of limitation. Descriptions of known programming techniques, computer software, hardware, operating platforms and protocols may be omitted so as not to unnecessarily obscure the disclosure in detail. Various substitutions, modifications, additions and/or rearrangements within the spirit and/or scope of the underlying inventive concept will become apparent to those skilled in the art from this disclosure.

FIG. 1 illustrates an exemplary environment in which a website rendering method and system disclosed herein may be implemented. In the example illustrated, the system 100 includes a user device 101 running a web application 102; a device service 104; and a device farm 106 including one or more devices 108 a-108 n running device applications 110 a-110 n. The device applications 110 a-110 n may be specific for each device's corresponding operating system (e.g., iOS, Android, Windows Phone, etc.). In at least one embodiment, the web application is generated from data, such as hypertext markup language (HTML) data, that includes structure and layout of a user interface.

The user device 101 may be embodied as a personal computer or laptop computer, for example. Personal computers include smartphones and tablet computers. The web application 102 may be an application program including a user interface and capable of communicating with the device service 104. In some embodiments, as will be discussed in greater detail below, the web application 102 may allow a tester to input a URL for each of one or more web pages of a website or select a website domain for testing and/or may select corresponding devices in device farm 106 to test the web pages. In at least one embodiment, the web app includes default URL's, website domains, and/or devices for testing. The user device 101 communicates with the one or more servers 103 via a network, such as the Internet.

The following description applies to sending a URL and, unless otherwise indicated, also applies to multiple URL's and website domains. The device service 104 may be implemented on one or more servers 103, for example, a cloud-based service providing access to the device farm 106 for a fee. The device service 104 communicates with the devices 108 a-108 n, sending them the URL received from the web application 102 to coordinate activating a web browser on each of the set of devices selected, rendering the web page by each web browser of the set of devices selected, for each of the set of devices selected, and capturing one or more images of the web page as rendered by the set of devices selected. The device applications 110 a-110 n cause their integrated web browsers 112 a-112 n to open the web page. The device applications 110 a-110 n then render and capture images of the web pages identified by the URL(s) or web domain selection and transmit them via the device service 104 to the web application 102. In at least one embodiment, the URL(s) and web domain are predetermined and stored by the device service 104 by, for example, a previous selection of the tester (also referred to as a “user”).

FIG. 2 illustrates a storyboard representation of user interfaces presented by web app 102 and tester interaction therewith in greater detail. In particular, at 202, a web application (e.g., the web application 102 shown in FIG. 1) allows a tester to enter a URL of a web page of a website that the tester would like to see rendering by the devices 108 a-108 n as selected by the tester. The tester can then select the devices for which the website will be rendered on, as shown at 204.

In some embodiments, the request to a device service (e.g., the device service 104 shown in FIG. 1) is sent as soon as a device is selected. In this way, the lag time for the user to see the resulting images may be shortened, if not eliminated entirely. As shown at 206, after the tester is finished choosing their devices, a page is presented which immediately begins to show a rendered image from the device and continues to show the progress being made while the image is processed. The complete web page of the website as rendered on the user devices (e.g., user devices 108 a-108 n shown in FIG. 1) are then displayed to the tester, at 208. After the website images are rendered, in some embodiments, the tester may optionally share and/or export them. Additionally, in at least one embodiment, when the tester selects a website domain or home page URL, the device service 104 repeats the process of activating devices 108 a-108 n selected, capturing an image of the web page, and providing test results data by navigating through all the website pages or through a subset of pages as selected by the tester. An example of a subset of pages is navigating through all of the pages in a business or sports section of a website.

Advantageously, in some embodiments, the images for the websites are the entire page for the given URL, not just what would fit on a device's screen. However, the user may want to see how much information fits on the device screen. Consequently, in some embodiments, the web application may show one or more representative lines, such as a fold line, so the user can conveniently view possible page divisions.

For example, shown at 302 in FIG. 3 is an example of a website capture on an iPhone 5S device. The fold line 304 denotes where a new screen view begins. (In operation, an end user of the device would scroll down to view the remainder of the website). A similar website capture is shown at 306 for the Galaxy 5S device, with its fold line shown at 308.

In some embodiments, the rendered image may be very large, owing to the high resolution (DPI) of some mobile devices. In this case, the web application 102 may show a scaled image and allow the user to click the image to see a full screen image. This gives the user to quickly scan the image for anomalies, while still being able to zoom in.

Some embodiments may also provide the user with the ability to compare one or more images to highlight a possible problem or differences from one version of the website to the next. This feature may show one or more image and use color and/or boxes around differences. The areas that are the same may be slightly dimmed to place more emphasis on the differences.

In some embodiments, the device service 104 functions as a middleman between the web application 102 and the physical devices 108 a-108 n. In particular, in some embodiments, the device service 104 provides secure REST API calls: (i) Type of devices that are available to render websites; (ii) Status of the devices (availability, working on a rendering (job), etc.); and (iii) Cancel a job on a device.

In some embodiments, the web application 102 makes secure REST API calls to the device service 104 to request a URL for a given device. The device service 104 then creates a job for a device. If all devices are busy, the callback for the REST API will provide status of the job.

When the job is complete, the callback will return and tell the web application 102 it is complete and provide the image for viewing.

Below is a representative sample and description of the REST API for creating a job:

-   -   ### POST/api/vl/jobs     -   Posts a new job.         -   Required fields:             -   ‘requested_device_type’: The device type requested                 (‘‘iPhone 5s’ ‘iPad Air’ . . . ’)             -   ‘url’: The requested URL             -   ‘orientation’: ‘portrait’ or ‘landscape’             -   ‘format’: ‘jpg’ or ‘png’             -   ‘callback_url’: url to call when a job is being                 processed                 -   The callback is used (via http POST) to notify of                     status changes for a job and to send the image to                     the requesting server. The images are ephemeral on                     Mobilizer Capture Service, so you should save the                     image from the callback.                 -   Callbacks can be made multiple times during job                     execution:                 -    1. To indicate status changes                 -    2. Once complete, a callback will be made with a                     time sensitive URL to the image. The URL requires                     the same authentication.                 -   Callback contents (Content-Type application/json):

{ “job” : id, “status” : “loading|complete|failed”, [“device” : { “name” : “{device name}”, “os” : “{operating system - iOS, Android, ...}”, “os_version” : “{os version}” }], [“url” : {image url when status == “completed”}], [“error” : {error code when status == “failed”}] }

-   -   -   Other possible fields, currently not used:             -   ‘requested_os’             -   ‘requested_os_version’         -   Returns:             -   JSON representation of the full job (including the newly                 created ‘id’)

As the cloud service 104 creates jobs, in some embodiments, it sends commands to the device application 110 a-110 n being queued over TCP/IP. The message traffic over TCP/IP contains the URL to be rendered.

In some embodiments, the device application 108 a-110 n is a native application for each device OS and is used to capture the website on that device. The native application may be deployed to devices that have network connectivity to the device service. In some embodiments, the device application can support multiple concurrent website renderings. The number supported can vary based on the computing power of the device. In some embodiments, the website image may be created as a full-size rendering of the website in either PNG or JPEG format, depending on the requestor.

Turning now to FIG. 4, a flowchart 400 illustrating operation of a system implementing a method according to some embodiments disclosed herein is shown. At 402, a tester or user may input a URL of a website to be tested, as well as selecting the devices on which he wishes to run the test via a web application (the web application 102 shown in FIG. 1). The URL and selected device(s) are then sent to a device service (e.g., the device service 104 shown in FIG. 1), at step 404. As noted above, this may be done by the web application using a REST API call to the device service. At step 406, the device service may select the physical devices and transmit to those physical devices the URL of the website to be rendered, for example, using TCP/IP. In response, a device application (e.g., the device application 110 shown in FIG. 1) running on a physical device opens and causes an integrated browser to open and render the website of the requested URL on the physical device, at step 408. The device application then captures images of the entire website at the URL and transmits back to the web application via the device service, at step 410. It is noted that, in some embodiments, the devices may access more than one website at a time, i.e., in response to commands from the device service, multiple physical devices may render and return (in parallel in one embodiment) images of more than one website.

Further details on the operation of the device application(s) described above can be found in U.S. Provisional Application No. 62/067,312.

FIG. 5 depicts an embodiment of a website/web page and device testing process 500 that, in at least one embodiment, is implemented as a program stored in a memory and executed by a processor of server 103. As previously mentioned, the devices 108 a-108 n can physically render web pages of a website differently than expected, thus, yielding unpredictable web page rendering and display results. Furthermore, many previously identified features of the devices 108 a-108 n are often updated or otherwise changed on a physical and/or software (including firmware and operating systems) basis. Additionally, many websites often change the content, format, graphics, or other design features. Changing devices, changing web pages of websites, and the unpredictable results of physical rendering and display of a web page on the devices, physically testing the web pages on devices of interest in an on demand environment presents a tangible and concrete technical problem that is can be exponentionally magnified by the number of possible changes in and differences between the devices 108 a-108 n and changes to the websites being tested. The website/web page and device testing process 500 provides an embodiment of a technical solution to overcome the physical limitations of selecting devices and web pages, activating the devices for testing the web pages, and returning test results to a user.

Referring to FIGS. 1 and 5, in operation 502, the device service 104 provides data that includes structure and layout of a user interface to a second computer system, such as the user device 101, to cause the user device to present a user interface in the web application 102 to a user of the user device 101 to allow the user to select, and the user device 101 to send, a selection of a set of devices in a device farm to be tested for rendering a web page. In at least one embodiment, the web application 102 is a browser. Optionally, the user interface of operation 502 also optionally allows the user to select and send data identifying one or more web pages of a website to be tested. In operation 504, the server 103 receives the selection of the set of devices and, optionally, the data identifying one or web pages, to be tested for rendering the web page of the website. In operation 506, the server 103 utilizes the device service 104 to coordinate specific functions of the set of devices selected. In at least one embodiment, the device service 104 is utilized by the server 103 to coordinate activating a web browser in the device applications 110 on each of the set of devices 108 selected, rendering the web page by each web browser 110 of the set of devices 108 selected, and for each of the set of devices 108 selected, capturing one or more images, such as the images shown in 302 and 306 of the web page as rendered by the set of devices 108 selected.

In operation 508, the device service 104 and the server 103 transmit image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected. In at least one embodiment, the third computer system is the user device 101. In at least one embodiment, the third computer system is another computer system (not shown). In at least one embodiment, the user interface provided by the web app 102 allows a user of the user device 101 selects a method of transmitting the image test result data and/or a destination computer system to receive the image test result data. The method of transmitting the image test result data is a matter of design choice and is, for example, via electronic mail (email) or as one or more images with data to allow the third computer system to render the images in a browser of the third computer system.

The nature of the image test result data is a matter of design choice. In at least one embodiment, the image test result data includes the captured images. In at least one embodiment, the captured images are analyzed as discussed with reference to FIG. 6, and the image test result data includes image-to-target comparison results data.

FIG. 6 depicts a captured image-to-target comparison operation 600. Due to the frequency of changes to and volume of websites and devices 108 a-108 n or due to preferences of the tester, reviewing individual captured images of web pages transmitted to user device 101 by the tester may be impractical or undesireable. The captured image-to-target comparison operation 600 optionally transmits the captured images to a computer system (not shown) that is remotely located from the server 103. An exemplary, remote computer system is provided by Applitools of Tel-Aviv, Israel, which is available at applitools.com. Alternatively, the device service 104 performs operation 600 by hosting a service such as the service provided by Applitools. Operation 604 compares the one or more images captured from the website being tested with one or more predetermined target images and generates image-to-target comparison results data. In at least one embodiment, the predetermined target images are images that are known to accurately represent a desired display of the captured images of web pages being tested. In at least one embodiment, generation of the image-to-target comparison data involves a pixel-to-pixel comparison between the captured images and the target images, and the image-to-target comparison results data represents a difference and/or an interpretation of a difference between the captured images and the target images. An exemplary interpretation of the difference between the captured images and the target images is a determination of whether the difference is greater than or less than a predetermined difference threshold or a percentage of matching and different pixels.

In operation 606, in at least one embodiment, if a remote computer system performs operation 604, the remote computer system then either (i) transmits the image-to-target comparison results data to server 103 and device service 104, which then transmit the image-to-target results data to user device 101 or (ii) transmits the image-to-target comparison results data directly to user device 101. The tester can then review the results and take appropriate action based on the results.

FIG. 7 depicts an availability and validation process 700 performed by device service 104. In at least one embodiment, to obtain proper testing results, the device service 104 detects if any of the devices 108 a-108 n are unavailable and validates availability of of the devices 108 a-108 n. In at least one embodiment, to properly test web pages on devices 108 a-108 n, the device service 104 detects in operation 702 when a device of the devices 108 a-108 n is unavailable to be utilized by the device service 104 to coordinate the specific functions from operation 506. In operation 704, for each of the devices 108 a-108 n that are unavailable, the device service 104 restarts each unavailable device and/or reassigns performance of the specific functions in operation 506 to an available device. In operation 706, the device service 104 validates that each device 108 a-108 n selected to test the web pages is available for performing the specific functions of operation 506. If a device is unavailable, in at least one embodiment, the device service 104 avoids utilizing the unavailable device for testing and provides an alert, such as via a display, email, or text message to an administrator of the server 103. The particular detection and validation operations 704 and 706 are matters of design choice. In at least one embodiment, each device 108 a-108 n includes capabilities to provide status data to the device service 104 either upon request of the device service 104 or automatically. For example, in at least one embodiment, each device 108 a-108 n provides data that indicate availability such as battery status indication, general availability, network connection status, and application status. In at least one embodiment, the data indicating availability is part of one or more operating system functions.

FIG. 8 depicts an exemplary device 108. User input device(s) 810, such as a keyboard and/or mouse, are coupled to a bi-directional system bus 818. The input user device(s) 810 are for introducing user input to the computer system and communicating that user input to processor 813. The computer system of FIG. 8 generally also includes a non-transitory video memory 814, non-transitory main memory 815, and non-transitory mass storage 809, all coupled to bi-directional system bus 818 along with input user device(s) 810 and processor 813. The mass storage 809 may include both fixed and removable media, such as a hard drive, one or more CDs or DVDs, solid state memory including flash memory, and other available mass storage technology. Bus 818 may contain, for example, 32 of 64 address lines for addressing video memory 814 or main memory 815. The system bus 818 also includes, for example, an n-bit data bus for transferring DATA between and among the components, such as CPU 809, main memory 815, video memory 814 and mass storage 809, where “n” is, for example, 32 or 64. Alternatively, multiplex data/address lines may be used instead of separate data and address lines.

I/O device(s) 819 may provide connections to peripheral devices, such as a printer, and may also provide a direct connection to a remote server computer systems via a telephone link or to the Internet via an ISP. I/O device(s) 819 may also include a network interface device to provide a direct connection to a remote server computer systems via a direct network link to the Internet via a POP (point of presence). Such connection may be made using, for example, wireless techniques, including digital cellular telephone connection, Cellular Digital Packet Data (CDPD) connection, digital satellite data connection or the like. Examples of I/O devices include modems, sound and video devices, and specialized communication devices such as the aforementioned network interface.

Computer programs and data are generally stored as instructions and data in a non-transient computer readable medium such as a flash memory, optical memory, magnetic memory, compact disks, digital versatile disks, and any other type of memory. The computer program is loaded from a memory, such as mass storage 809, into main memory 815 for execution. Computer programs may also be in the form of electronic signals modulated in accordance with the computer program and data communication technology when transferred via a network.

The processor 813, in one embodiment, is a microprocessor manufactured by Motorola Inc. of Illinois, Intel Corporation of California, or Advanced Micro Devices of California. However, any other suitable single or multiple microprocessors or microcomputers may be utilized. Main memory 815 is comprised of dynamic random access memory (DRAM). Video memory 814 is a dual-ported video random access memory. One port of the video memory 814 is coupled to video amplifier 816. The video amplifier 816 is used to drive the display 817. Video amplifier 816 is well known in the art and may be implemented by any suitable means. This circuitry converts pixel DATA stored in video memory 814 to a raster signal suitable for use by display 817. Display 817 is a type of monitor suitable for displaying graphic images.

FIG. 9 depicts an exemplary user interface 900 for display by the web app 102 of user device 101. Panel 902 depicts selected devices 108 for testing and the captured images 904-908 of the web page being tested. The captured images represent one embodiment of image test result data. The user can utilize the vertical slide control 910 and the horizontal slide control 912 to see the complete captured images on all the selected devices.

Thus, the system and method described herein provides a concrete and tangible technical solution to the problem of activating and testing multiple web pages on multiple devices to determine any anomalies or other errors in rendering the web pages due to, for example, the unpredictable nature of rendering web pages on multiple devices having, for example, a multitude of different configuration characteristics. Furthermore, the system and method, in at least one embodiment, provide an automated process that is capable of testing web pages and devices remotely and in parallel at a high bandwidth.

Although the invention has been described with respect to specific embodiments thereof, these embodiments are merely illustrative, and not restrictive of the invention. The description herein of illustrated embodiments of the invention, including the description in the Abstract and Summary, is not intended to be exhaustive or to limit the invention to the precise forms disclosed herein (and in particular, the inclusion of any particular embodiment, feature or function within the Abstract or Summary is not intended to limit the scope of the invention to such embodiment, feature or function). Rather, the description is intended to describe illustrative embodiments, features and functions in order to provide a person of ordinary skill in the art context to understand the invention without limiting the invention to any particularly described embodiment, feature or function, including any such embodiment feature or function described in the Abstract or Summary. While specific embodiments of, and examples for, the invention are described herein for illustrative purposes only, various equivalent modifications are possible within the spirit and scope of the invention, as those skilled in the relevant art will recognize and appreciate. As indicated, these modifications may be made to the invention in light of the foregoing description of illustrated embodiments of the invention and are to be included within the spirit and scope of the invention. Thus, while the invention has been described herein with reference to particular embodiments thereof, a latitude of modification, various changes and substitutions are intended in the foregoing disclosures, and it will be appreciated that in some instances some features of embodiments of the invention will be employed without a corresponding use of other features without departing from the scope and spirit of the invention as set forth. Therefore, many modifications may be made to adapt a particular situation or material to the essential scope and spirit of the invention.

Reference throughout this specification to “one embodiment”, “an embodiment”, or “a specific embodiment” or similar terminology means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment and may not necessarily be present in all embodiments. Thus, respective appearances of the phrases “in one embodiment”, “in an embodiment”, or “in a specific embodiment” or similar terminology in various places throughout this specification are not necessarily referring to the same embodiment. Furthermore, the particular features, structures, or characteristics of any particular embodiment may be combined in any suitable manner with one or more other embodiments. It is to be understood that other variations and modifications of the embodiments described and illustrated herein are possible in light of the teachings herein and are to be considered as part of the spirit and scope of the invention.

In the description herein, numerous specific details are provided, such as examples of components and/or methods, to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that an embodiment may be able to be practiced without one or more of the specific details, or with other apparatus, systems, assemblies, methods, components, materials, parts, and/or the like. In other instances, well-known structures, components, systems, materials, or operations are not specifically shown or described in detail to avoid obscuring aspects of embodiments of the invention. While the invention may be illustrated by using a particular embodiment, this is not and does not limit the invention to any particular embodiment and a person of ordinary skill in the art will recognize that additional embodiments are readily understandable and are a part of this invention.

Any suitable programming language can be used to implement the routines, methods or programs of embodiments of the invention described herein, including C, C++, Java, assembly language, etc. Different programming techniques can be employed such as procedural or object oriented. Any particular routine can execute on a single computer processing device or multiple computer processing devices, a single computer processor or multiple computer processors. Data may be stored in a single storage medium or distributed through multiple storage mediums, and may reside in a single database or multiple databases (or other data storage techniques). Although the steps, operations, or computations may be presented in a specific order, this order may be changed in different embodiments. In some embodiments, to the extent multiple steps are shown as sequential in this specification, some combination of such steps in alternative embodiments may be performed at the same time. The sequence of operations described herein can be interrupted, suspended, or otherwise controlled by another process, such as an operating system, kernel, etc. The routines can operate in an operating system environment or as stand-alone routines. Functions, routines, methods, steps and operations described herein can be performed in hardware, software, firmware or any combination thereof.

Embodiments described herein can be implemented in the form of control logic in software or hardware or a combination of both. The control logic may be stored in an information storage medium, such as a computer-readable medium, as a plurality of instructions adapted to direct an information processing device to perform a set of steps disclosed in the various embodiments. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the invention.

It is also within the spirit and scope of the invention to implement in software programming or code any of the steps, operations, methods, routines or portions thereof described herein, where such software programming or code can be stored in a computer-readable medium and can be operated on by a processor to permit a computer to perform any of the steps, operations, methods, routines or portions thereof described herein. The invention may be implemented by using software programming or code in one or more digital computers, by using application specific integrated circuits, programmable logic devices, field programmable gate arrays, and so on. Optical, chemical, biological, quantum or nanoengineered systems, components and mechanisms may be used. The functions of the invention can be embodied in distributed, or networked systems, components and circuits, and the like. In another example, communication or transfer (or otherwise moving from one place to another) of data may be wired, wireless, or by any other means.

A “computer-readable medium” may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, system or device. The computer readable medium can be, by way of example only but not by limitation, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, system, device, propagation medium, or computer memory. Such computer-readable medium shall be machine readable and include software programming or code that can be human readable (e.g., source code) or machine readable (e.g., object code). Examples of non-transitory computer-readable media can include random access memories, read-only memories, hard drives, data cartridges, magnetic tapes, floppy diskettes, flash memory drives, optical data storage devices, compact-disc read-only memories, and other appropriate computer memories and data storage devices. In an illustrative embodiment, some or all of the software components may reside on a single server computer or on any combination of separate server computers. As one skilled in the art can appreciate, a computer program product implementing an embodiment disclosed herein may comprise one or more non-transitory computer readable media storing computer instructions translatable by one or more processors in a computing environment.

A “processor” includes any, hardware system, mechanism or component that processes data, signals or other information. A processor can include a system with a central processing unit, multiple processing units, dedicated circuitry for achieving functionality, or other systems. Processing need not be limited to a geographic location, or have temporal limitations. For example, a processor can perform its functions in “real-time,” “offline,” in a “batch mode,” etc. Portions of processing can be performed at different times and at different locations, by different (or the same) processing systems.

As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having,” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, product, article, or apparatus that comprises a list of elements is not necessarily limited only those elements but may include other elements not expressly listed or inherent to such process, product, article, or apparatus.

Furthermore, the term “or” as used herein is generally intended to mean “and/or” unless otherwise indicated. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present). As used herein, a term preceded by “a” or “an” (and “the” when antecedent basis is “a” or “an”) includes both singular and plural of such term, (i.e., that the reference “a” or “an” clearly indicates only the singular or only the plural). Also, as used in the description herein, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.

It will be appreciated that one or more of the elements depicted in the drawings/figures can also be implemented in a more separated or integrated manner, or even removed or rendered as inoperable in certain cases, as is useful in accordance with a particular application. Additionally, any signal arrows in the drawings/figures should be considered only as exemplary, and not limiting, unless otherwise specifically noted. 

What is claimed is:
 1. A method comprising: executing a program by a first computer system that transforms the first computer system into a machine to perform: receiving from a second computer system a selection of a set of devices to be tested for rendering the web page of the website; utilizing a device service to coordinate: activating a web browser on each of the set of devices selected; rendering the web page by each web browser of the set of devices selected; and for each of the set of devices selected, capturing one or more images of the web page as rendered by the set of devices selected; and transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected.
 2. The method of claim 1 further comprising: executing the program by the first computer system to perform: providing data that includes structure and layout of a user interface to the second computer system to cause the second computer system to present the user interface to a user of the second computer system to allow the user to select, and the second computer system to send, a selection of the set of devices in the device farm to be tested for rendering a web page of the website.
 3. The method of claim 2 wherein: providing data that includes structure and layout of a user interface to a second computer system further comprises: providing data that includes structure and layout of a user interface to a second computer system to cause the second computer system to present the user interface to a user of the second computer system to allow the user to select and the second computer system to send (i) data identifying one or more web pages of a website to be tested and (ii) a set of devices in a device farm to be tested for rendering the web page of the website; the method further comprising: receiving the data identifying the one or more web pages of the website to be tested; and utilizing a device service to coordinate: activating a web browser on each of the set of devices selected; rendering by each web browser by the set of devices selected each web page identified; and for each of the set of devices selected, capturing one or more images of each web page as rendered by the set of devices selected; and transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected.
 4. The method of claim 1 wherein the test result data comprises the one or more images captured and transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected comprises: transmitting the image test result data to the third computer system to allow the third computer system to display the one or more images captures and to allow the user to evaluate the rendering of the web page by each of the set of devices selected.
 5. The method of claim 1 further comprising: transmitting the captured images to a fourth computer system to allow the fourth computer system to compare the one or more images with one or more predetermined target images and generated image-to-target comparison results data; and receiving the image-to-target comparison results data; and wherein transmitting image test result data comprises: transmitting the image-to-target comparison results data.
 6. The method of claim 1 wherein the third computer system is the same as the second computer system.
 7. The method of claim 1 further comprising executing a program by a first computer system that transforms the first computer system into a machine to perform: detecting when any of the devices are unavailable to be utilized by the device service to coordinate the activating, rendering, and capturing; and for each of the devices that are unavailable, performing one or more of the following processes: restarting each unavailable device; and reassigning the activating, rendering, and capturing from an unavailable device to an available device.
 8. The method of claim 7 further comprising executing a program by a first computer system that transforms the first computer system into a machine to perform: validating that each device in the set of devices selected is available for the activating, rendering, and capturing.
 9. The method of claim 1 wherein the selection of-a set of devices is a selection of particular types of devices and not a selection of a particular device.
 10. The method of claim 1 wherein transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected comprises: transmitting the one or more images to a third computer system to allow the third computer system to display each of the images and to allow the user to evaluate the rendering of each web page by each of the set of devices selected, wherein transmitting the one or more images to a third computer system comprises a member of a group consisting of: transmitting the one or more images in an email; or transmitting the one or more images with data to allow the third computer system to render the images in a browser of the third computer system.
 11. The method of claim 1 wherein transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected comprises: transmitting one image per web page per device selected to the third computer system to allow the third computer system to display each image to allow the user to evaluate the rendering of the web page by each of the set of devices selected.
 12. The method of claim 1 further comprising: executing the program by the first computer system that transforms the first computer system into a machine to perform: providing data that includes structure and layout of a user interface to a second computer system to cause the second computer system to present the user interface to a user of the second computer system to allow the user to select and the second computer system to send (i) multiple identifiers of multiple web pages of the website to be tested and (ii) the set of devices in the device farm to be tested for rendering the multiple web pages of the website; receiving the identifiers of the web pages of the website; utilizing a device service to coordinate: activating a web browser on each of the set of devices selected; rendering by each web browser of the web pages by the set of devices selected; and for each of the set of devices selected, capturing images of the web pages as rendered by the set of devices selected; and transmitting the images to the third computer system to allow the third computer system to display each of the images and to allow the user to evaluate the rendering of the web pages by each of the set of devices selected.
 13. The method of claim 1 wherein the identifier is a uniform resource locator.
 14. The method of claim 1 wherein each web browser of each device is a member of a group consisting of: (i) an integrated web browser of the device or (2) or an embedded in an application of the device.
 15. The method of claim 1 wherein the set of devices comprise: one or more members of a group consisting of: smart phones, tablet personal computers, laptop personal computers, and desktop personal computers; one or more operating systems; and one or more browser type applications.
 16. The method of claim 1 wherein the data identifying one or more web pages of a website to be tested comprises at least one member of a group consisting of (i) one or more identifiers of one or more web pages of a website to be tested or (ii) an identification of one or more web sites to be tested.
 17. The method of claim 16 wherein the one or more identifiers of one or more web pages of the website to be tested comprises one or more uniform resource locators of the one or more web pages.
 18. An apparatus comprising: a first computer system, the first computer system comprising: a processor; and a memory, coupled to the processor, executing a program by the processor of the first computer system that transforms the first computer system into a machine to perform: receiving from a second computer system a selection of a set of devices to be tested for rendering the web page of the website; utilizing a device service to coordinate: activating a web browser on each of the set of devices selected; rendering the web page by each web browser of the set of devices selected; and for each of the set of devices selected, capturing one or more images of the web page as rendered by the set of devices selected; and transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected.
 19. The apparatus of claim 18 wherein the code is further executable by the processor for: providing data that includes structure and layout of a user interface to the second computer system to cause the second computer system to present the user interface to a user of the second computer system to allow the user to select, and the second computer system to send, a selection of the set of devices in the device farm to be tested for rendering a web page of the website.
 20. The apparatus of claim 18 wherein the test result data comprises the one or more images captured and transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected comprises: transmitting the image test result data to the third computer system to allow the third computer system to display the one or more images captures and to allow the user to evaluate the rendering of the web page by each of the set of devices selected.
 21. The apparatus of claim 18 wherein the code is further executable by the processor for: transmitting the captured images to a fourth computer system to allow the fourth computer system to compare the one or more images with one or more predetermined target images and generated image-to-target comparison results data; providing data that includes structure and layout of a user interface to a second computer system to cause the second computer system to present the user interface to a user of the second computer system to allow the user to select and the second computer system to send (i) data identifying one or more web pages of a website to be tested and (ii) a set of devices in a device farm to be tested for rendering the web page of the website; and receiving the image-to-target comparison results data; and wherein transmitting image test result data comprises: transmitting the image-to-target comparison results data, the system wherein the code is further executable by the processor for: receiving the data identifying the one or more web pages of the website to be tested; and utilizing a device service to coordinate: activating a web browser on each of the set of devices selected; rendering by each web browser by the set of devices selected each web page identified; and for each of the set of devices selected, capturing one or more images of each web page as rendered by the set of devices selected; and transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected.
 22. The system of claim 1 wherein the third computer system is the same as the second computer system.
 23. The system of claim 18 wherein the code is further executable by the processor for: detecting when any of the devices are unavailable to be utilized by the device service to coordinate the activating, rendering, and capturing; and for each of the devices that are unavailable, performing one or more of the following processes: restarting each unavailable device; and reassigning the activating, rendering, and capturing from an unavailable device to an available device.
 24. The system of claim 23 wherein the code is further executable by the processor for: validating that each device in the set of devices selected is available for the activating, rendering, and capturing.
 25. The system of claim 18 wherein the selection of-a set of devices is a selection of particular types of devices and not a selection of a particular device.
 26. The system of claim 18 wherein transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected comprises: transmitting the one or more images to a third computer system to allow the third computer system to display each of the images and to allow the user to evaluate the rendering of each web page by each of the set of devices selected, wherein transmitting the one or more images to a third computer system comprises a member of a group consisting of: transmitting the one or more images in an email; or transmitting the one or more images with data to allow the third computer system to render the images in a browser of the third computer system.
 27. The system of claim 18 wherein transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected comprises: transmitting one image per web page per device selected to the third computer system to allow the third computer system to display each image to allow the user to evaluate the rendering of the web page by each of the set of devices selected.
 28. The system of claim 18 wherein the code is further executable by the processor for: providing data that includes structure and layout of a user interface to a second computer system to cause the second computer system to present the user interface to a user of the second computer system to allow the user to select and the second computer system to send (i) multiple identifiers of multiple web pages of the website to be tested and (ii) the set of devices in the device farm to be tested for rendering the multiple web pages of the website; receiving the identifiers of the web pages of the website; utilizing a device service to coordinate: activating a web browser on each of the set of devices selected; rendering by each web browser of the web pages by the set of devices selected; and for each of the set of devices selected, capturing images of the web pages as rendered by the set of devices selected; and transmitting the images to the third computer system to allow the third computer system to display each of the images and to allow the user to evaluate the rendering of the web pages by each of the set of devices selected.
 29. The system of claim 18 wherein the identifier is a uniform resource locator.
 30. The system of claim 18 wherein each web browser of each device is a member of a group consisting of: (i) an integrated web browser of the device or (2) or an embedded in an application of the device.
 31. The system of claim 18 wherein the set of devices comprise: one or more members of a group consisting of: smart phones, tablet personal computers, laptop personal computers, and desktop personal computers; one or more operating systems; and one or more browser type applications.
 32. The system of claim 18 wherein the data identifying one or more web pages of a website to be tested comprises at least one member of a group consisting of (i) one or more identifiers of one or more web pages of a website to be tested or (ii) an identification of one or more web sites to be tested.
 33. The system of claim 32 wherein the one or more identifiers of one or more web pages of the website to be tested comprises one or more uniform resource locators of the one or more web pages.
 34. A non-transitory, computer readable medium comprising a program stored therein that is executable by a processor of a first computer system to transform the first computer system into a machine to perform: receiving from a second computer system a selection of a set of devices to be tested for rendering the web page of the website; utilizing a device service to coordinate: activating a web browser on each of the set of devices selected; rendering the web page by each web browser of the set of devices selected; and for each of the set of devices selected, capturing one or more images of the web page as rendered by the set of devices selected; and transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected.
 35. A client computer system comprising: a processor; and a memory, coupled to the processor, that includes a program executable by a processor of the client computer system to perform: launching a user interface to cause the client computer system to present the user interface to a user of the client computer system to allow the user to select and the client computer system to send (i) multiple identifiers of multiple web pages of the website to be tested and (ii) the set of devices in the device farm to be tested for rendering the multiple web pages of the website; sending to a first computer system a selection of a set of devices to be tested for rendering the web page of the website, wherein the first computer system utilizes a device service to coordinate: activating a web browser on each of the set of devices selected; rendering the web page by each web browser of the set of devices selected; and for each of the set of devices selected, capturing one or more images of the web page as rendered by the set of devices selected; and receiving image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected. 